Ext.namespace("Nippy.Components.NodeEditors");

Nippy.Components.NodeEditors.NodeEditor = Ext.extend(Nippy.Components.NodeEditors.BasicEditor, {
    /*constructor: function(config){
		Nippy.Components.NodeEditors.NodeEditor.superclass.constructor.apply(this, arguments);
    }
	,*/initComponent: function(){
		if (this.nodeId!=undefined){
			Ext.Ajax.request({
				url: '/admin/tree-node/?id='+this.nodeId,
				scope: this,
				failure: function(rsp){Ext.Msg.alert("Ошибка","Не удалось загрузить узел: "+rsp);},
				success: this.nodeLoaded
			});
		}
		Ext.apply(this, {
		    labelWidth: 135, // label settings here cascade unless overridden
		    frame:true,
		    title: 'Узел: '.concat((this.nodeId!=null)? this.nodeId : 'новый'),
		    bodyStyle:'padding:5px 5px 0',
		    width: 550,
		    defaultType: 'textfield',
            addOther: true,
		    items: [/*{
		            fieldLabel: 'Внутреннее название',
		            name: 'Name',
		            allowBlank:false
	        	}
	        	, */new Ext.form.ComboBox({
	        		typeAhead: true,
	            	fieldLabel: 'Контроллер',
	            	name: 'CfgController',
	            	store: this.cfgStore,
	            	displayField: 'Name',
	            	valueField: 'Id',
	            	hiddenName: 'CfgId',
	            	allowBlank: false,
	            	forceSelection: true,
	            	//mode: 'remote',
	            	mode: 'local',
	            	selectOnFocus: true,
	            	triggerAction: 'all',
	            	emptyText: 'Выберите конфигурацию',
	            	valueNotFoundText: 'Выберите конфигурацию'
	            })
	        	, new Ext.form.ComboBox({
	        		typeAhead: true,
	            	fieldLabel: 'Шаблон',
	            	name: 'Layout',
	            	store: this.layoutStore,
	            	displayField: 'Name',
	            	valueField: 'Id',
	            	hiddenName: 'LayoutId',
	            	allowBlank: false,
	            	forceSelection: true,
	            	//mode: 'remote',
	            	mode: 'local',
	            	selectOnFocus: true,
	            	triggerAction: 'all',
	            	emptyText: 'Выберите шаблон',
	            	valueNotFoundText: 'Выберите шаблон'
	            })
		    	/*,{
		            fieldLabel: 'URL',
		            name: 'URL',
		            allowBlank:false
					,regex: /^[a-zA-Z0-9\-\/\.\(\)\+\=\~\?\&\%]+$/
					,regexText: "Только латинские буквы, цифры символы -()+/=~?&%"
		        }
		        ,{
		            fieldLabel: 'Title',
		            name: 'Title',
		            allowBlank: false
		        }
		        ,{
		            fieldLabel: 'META Keywords',
		            name: 'MetaKeywords',
		            allowBlank: false
		        }
		        ,{
		            fieldLabel: 'META Description',
		            name: 'MetaDescription',
		            allowBlank: false
		        }
		        ,{
		            fieldLabel: 'Публиковать в меню',
		            name: 'InMenu',
		            xtype: 'checkbox',
		            allowBlank: false,
		            inputValue: 1
		        }
		        ,{
		            fieldLabel: 'Название для меню',
		            name: 'MenuTitle',
		            allowBlank: true
		        }*/
				,{
		            fieldLabel: 'Sitemap, приоритет',
		            name: 'Priority',
		            allowBlank: false,
					inputValue: 0.5
		        }
				,new Ext.form.ComboBox({
		        	fieldLabel: 'Sitemap, частота обн.',
					name: 'changefreq',
		            store: new Ext.data.ArrayStore({
			            fields: ['changefreq', 'id'],
			            data : [['always',1],['hourly',2],['daily',3],['weekly',4],['monthly',5],['yearly',6],['never',7]]
			        }),
			        forceSelection: true,
		            displayField:'changefreq',
					valueField: 'id',
					hiddenName: 'ChangeFreq',
		            typeAhead: true,
		            mode: 'local',
		            triggerAction: 'all',
		            emptyText:'Выберите частоту обновления...',
					valueNotFoundText: 'Выберите частоту обновления...',
		            selectOnFocus:true,
		            allowBlank: false
		        })
				,{
		            fieldLabel: 'Теги',
		            name: 'Tag',
		            allowBlank: true
		        }
		    ]
		});
		Nippy.Components.NodeEditors.NodeEditor.superclass.initComponent.apply(this, arguments);
	}
	,nodeLoaded: function(rsp){
		var r = eval("("+rsp.responseText+")");
		this.fillForm(r);
	}
	,saveClick: function(){
		var old = (this.nodeId!=undefined);
		this.getForm().submit({
			url: '/admin/tree-node/',
			method: old?'PUT':'POST',
			scope: this,
			params: old?{id: this.nodeId}:{pId: this.parentId},
			failure: this.submitFailure,
			success: function(form, action){
				this.node = action.result.node;
				this.nodeId = this.node.id;
				this.fireEvent('onsaved', this);
			}
		});
	}
});